package exercise;

import java.util.ArrayList;
import java.util.List;

// 给定两个整数 n 和 k，返回范围 [1, n] 中所有可能的 k 个数的组合。
// 你可以按 任何顺序 返回答案。
// https://leetcode.cn/problems/combinations/
public class L230629_II {
    public static List<List<Integer>> combine(int n, int k) {
        List<List<Integer>> tmp = new ArrayList<>();
        tmp.add(new ArrayList<>());
        List<List<Integer>> ans = new ArrayList<>();
        if (k == 0) {
            return tmp;
        }

        for (int i = 1; i <= n; i++) {
            int sz = tmp.size();
            for (int j = 0; j < sz; j++) {
                List<Integer> list = new ArrayList<>(tmp.get(j));
                list.add(i);
                tmp.add(list);
                if (list.size() == k) {
                    ans.add(list);
                }
            }
        }
        return ans;
    }

    public static void main(String[] args) {
        int n = 1;
        int k = 1;

        System.out.println(combine(n, k));
    }
}
